//
//  HMStatusCell.swift
//  01-SinaWeibo
//
//  Created by 周英培 on 16/5/24.
//  Copyright © 2016年 周英培. All rights reserved.
//  微博首页自定义 cell

import UIKit

import SnapKit

/*
 
 mas_makeConstraints 只负责新增约束 Autolayout不能同时存在两条针对于同一对象的约束 否则会报错
 mas_updateConstraints 针对上面的情况 会更新在block中出现的约束 不会导致出现两个相同约束的情况
 mas_remakeConstraints 则会清除之前的所有约束 仅保留最新的约束
 */

/*
 cell里面传递模型数据进行赋值
 */
class HMStatusCell: UITableViewCell {
    
    //声明约束对象属性
    var toolBarTopCons : Constraint?
    
    
    //传递模型
    var statusViewModel: HMStatusViewModel? {
    
        //视图绑定模型
        didSet {
        
        statusOriginalView.statusViewModel = statusViewModel
            
//        statusTransmitView.statusViewModel = statusViewModel
            
            //给工具条赋值
            statusToolBarView.statusViewModel = statusViewModel
            
            //判断是否是转发微博
            //先卸载工具条的顶部约束
            toolBarTopCons?.uninstall()
            if statusViewModel?.status?.retweeted_status?.text == nil {
                
                //原创微博 则转发微博隐藏
                statusTransmitView.hidden = true
                
                /*
                 
                 - snp_update 只能更新已经存在的约束 对于不存在的约束会自动生成新的约束
                 - 更新约束 必须是相同的约束才行
                 - 在更新约束之前 先卸载顶部约束 保证只有一条约束
                 - 使用约束对象记录之前已经添加好的约束, Constraint类型 就是SnapKit在设置约束的时候添加的约束对象
                 */
                //设置约束
//                statusToolBarView.snp_makeConstraints(closure: { (make) in
//                   self.toolBarTopCons = make.top.equalTo(statusOriginalView.snp_bottom).constraint
//                })
                
                statusToolBarView.snp_updateConstraints(closure: { (make) in
                    self.toolBarTopCons = make.top.equalTo(statusOriginalView.snp_bottom).constraint
                })
                
            } else {
            //转发微博
                //设置数据
                statusTransmitView.statusViewModel = statusViewModel
                
                //显示转发微博
                 statusTransmitView.hidden = false
                
                //设置约束
//                statusToolBarView.snp_makeConstraints(closure: { (make) in
//                   self.toolBarTopCons = make.top.equalTo(statusTransmitView.snp_bottom).constraint
//                })
                
                statusToolBarView.snp_updateConstraints(closure: { (make) in
                    self.toolBarTopCons = make.top.equalTo(statusTransmitView.snp_bottom).constraint
                })
            
            
            }
        
        }
    
    }
    

    //使用xib加载时，使用这个方法
    override func awakeFromNib() {
        super.awakeFromNib()
        // Initialization code
        
    }

    
    override init(style: UITableViewCellStyle, reuseIdentifier: String?) {
        super.init(style: style, reuseIdentifier: reuseIdentifier)
        
        //设置cell的颜色
//        self.backgroundColor = randomColor()
        
        //取消cell的点击状态
        selectionStyle = .None
        
        //添加原创微博视图
        setUpUI()
    }
    
    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
    
    //添加原创视图到cell上
    private func setUpUI() {
    
        contentView.addSubview(statusOriginalView)
        contentView.addSubview(statusToolBarView)
        contentView.addSubview(statusTransmitView)
        
        //设置约束
        //原创微博视图
        statusOriginalView.snp_makeConstraints { (make) in
            make.top.left.right.equalTo(contentView)
            
            //设置一个测试用的高度
//            make.height.equalTo(100)
        }
        
        
        //转发微博视图
        statusTransmitView.snp_makeConstraints { (make) in
            make.left.right.equalTo(contentView)
            make.top.equalTo(statusOriginalView.snp_bottom)
            
        }
        
        //底部toolBar
        statusToolBarView.snp_makeConstraints { (make) in
            
            make.bottom.equalTo(contentView)
            
            //记录顶部约束
           self.toolBarTopCons = make.top.equalTo(statusTransmitView.snp_bottom).constraint
            
            make.left.right.equalTo(contentView)
            
//            make.height.equalTo(36)
         
        }
        
        //给cell的contengView的底部设置约束
        contentView.snp_makeConstraints { (make) in
            //这时候的make把所有的约束都给去掉了 所以这时候要把约束给全部加上
            make.left.right.top.equalTo(self)
            make.bottom.equalTo(self.snp_bottom)
        }
        
        
        
    }
    
    //懒加载原创微博视图
    private lazy var statusOriginalView : HMStatusOriginalView = HMStatusOriginalView()
    
    //懒加载底部toolBar
    private lazy var statusToolBarView : HMStatusToolBar = HMStatusToolBar()
    
    //懒加载转发微博视图
    private lazy var statusTransmitView : HMStatusTransmitView = HMStatusTransmitView()
   
}
